﻿using System.Windows;
using System.Windows.Controls;

namespace HandyControl.Data
{
    internal struct PanelUvSize
    {
        private readonly Orientation _orientation;

        public Size ScreenSize => new(U, V);

        public double U { get; set; }

        public double V { get; set; }

        public double Width
        {
            get => _orientation == Orientation.Horizontal ? U : V;
            private set
            {
                if (_orientation == Orientation.Horizontal)
                {
                    U = value;
                }
                else
                {
                    V = value;
                }
            }
        }

        public double Height
        {
            get => _orientation == Orientation.Horizontal ? V : U;
            private set
            {
                if (_orientation == Orientation.Horizontal)
                {
                    V = value;
                }
                else
                {
                    U = value;
                }
            }
        }

        public PanelUvSize(Orientation orientation, double width, double height)
        {
            U = V = 0d;
            _orientation = orientation;
            Width = width;
            Height = height;
        }

        public PanelUvSize(Orientation orientation, Size size)
        {
            U = V = 0d;
            _orientation = orientation;
            Width = size.Width;
            Height = size.Height;
        }

        public PanelUvSize(Orientation orientation)
        {
            U = V = 0d;
            _orientation = orientation;
        }
    }
}
